package com.ceres.farm.service.impl;

import com.ceres.farm.dao.CropsMapper;
import com.ceres.farm.dao.CustFarmlandCropsMapper;
import com.ceres.farm.dao.CustFarmlandDeviceMapper;
import com.ceres.farm.dao.HistoryMapper;
import com.ceres.farm.pojo.CustFarmlandCrops;
import com.ceres.farm.pojo.CustFarmlandDevice;
import com.ceres.farm.pojo.History;
import com.ceres.farm.service.CustFarmlandCropsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.SimpleDateFormat;
import java.util.*;

@Service
@Transactional
public class CustFarmlandCropsServiceImpl implements CustFarmlandCropsService {
    @Autowired
    CropsMapper cropsMapper;
   @Autowired
    CustFarmlandCropsMapper custFarmlandCropsMapper;

    /***
     * 农作物种植
     * @param custFarmlandCrops
     */
    @Override
    public void addCrops(CustFarmlandCrops custFarmlandCrops) {
            //根据农作物查询全部成长阶段
        List<String> pest = cropsMapper.findPest(custFarmlandCrops.getCname());
        //设置成长阶段
            custFarmlandCrops.setStage("幼苗期");
            //设置当前时间为记录起始时间
        //截取当前系统时间
        Date currentTime = new Date();
    //改变输出格式（自己想要的格式）
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    //得到字符串时间
        String s8 = formatter.format(currentTime);
        custFarmlandCrops.setStartTime(s8);

        //进行添加
        int insert = custFarmlandCropsMapper.insert(custFarmlandCrops);
        if(insert==0){
            throw new RuntimeException();
        }

    }

    /**
     * 农作物详情
     * @param id
     * @return
     */
    @Override
    public Map<String, Object> cropsInfo(Integer id) {
        //创建map用于保存数据
        Map<String,Object> map=new HashMap<>();
        //根据大田id查询农作物和农作物生长状态
     CustFarmlandCrops crops=   custFarmlandCropsMapper.findNameById(id);
        //获取农作物名称
        String cname = crops.getCname();
        //获取农作物生长状态
        String stage = crops.getStage();
        //根据农作物名称和生长状态查询指标
        List< Map<String,Object>> cropsMapperIndexList = cropsMapper.findIndex(cname, stage);
        //指标map，用于存放指标数据
        List<Map<String,String>> list=new ArrayList<>();
        for (Map<String, Object> cropsMapperIndexmap : cropsMapperIndexList) {
            //遍历map集合
            for (String s : cropsMapperIndexmap.keySet()) {
                if("id".equals(s)){
                    //获取联合表的ID
                    Integer cropid =(Integer) cropsMapperIndexmap.get(s);
                    //根据ID查询指标名称
                    String indexType = cropsMapper.findIndexType(cropid);
                    Map<String,String> indexMap=new HashMap<>();
                    indexMap.put("indexType",indexType);
                    indexMap.put("range",cropsMapperIndexmap.get("opt_range").toString());
                    list.add(indexMap);
                }
            }
        }
        //添加指标数据
        map.put("index",list);
        //获取检测设备检测数据指标(目前显示假数据)
        List<Map<String,String>> newlist=new ArrayList<>();
        Map<String,String> newMap=new HashMap<>();
        newMap.put("newType","水");
        newMap.put("newRange","40%");
        newlist.add(newMap);
            map.put("newIndex",newlist);
        return map;
    }

    @Autowired
    HistoryMapper historyMapper;
    @Autowired
    CustFarmlandDeviceMapper deviceMapper;
    /**
     * 修改农作物生长阶段
     * @param stage
     */
    @Override
    public void updateStage(String stage,Integer fid) {
        //判断修改阶段是否为成熟期，
        // 当生长阶段为成时，添加当前系统时间为结束时间
        String endTime=null;
        if("成熟期".equals(stage)){
            //设置当前时间为记录起始时间
            //截取当前系统时间
            Date currentTime = new Date();
            //改变输出格式（自己想要的格式）
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            //得到字符串时间
            endTime = formatter.format(currentTime);
            //历史表的添加
                //获取设备数量
            //根据大田查询设备信息
            List<CustFarmlandDevice> deviceList = deviceMapper.selectByFid(fid);
            History history=new History();
            //添加设备数量
            history.setDnumber(deviceList.size());
            history.setFid(fid);
            //根据大田ID添加农作物名称
            CustFarmlandCrops crops= custFarmlandCropsMapper.findCrops(fid);
            history.setCname(crops.getCname());
            //添加记录起始/结束时间
            history.setStartTime(crops.getStartTime());
            history.setEndTime(endTime);
            history.setOutput("8000");
            historyMapper.insertHistory(history);
        }

      int index = custFarmlandCropsMapper.updateStage(stage,fid,endTime);

      if(index==0){
          throw new RuntimeException("修改阶段失败");
      }
    }
}
